import axios from 'axios'
import { url } from './url';

//没有登录时

const request = axios.create({
    timeout: 60000,
});


function ajax(opt) {

    let params = {};

    if (opt.params) {
        // 对传入的参数进行深拷贝，防止传入的参数对象被页面上其他逻辑改变，导致签名错误
        if (Object.prototype.toString.call(opt.params) !== '[object FormData]') {
            params = JSON.parse(JSON.stringify(opt.params));
        } else { // formdata类型
            params = opt.params;
        }
    }

    // axios会自动过滤值为undefined和null的参数，因此手动去掉这些参数，不让其参与签名，避免出现签名错误
    for (let key in params) {
        if (params[key] == null || params[key] == 'undefined') {
            delete params[key];
        }
    }

    let config1 = {
        url: url + opt.url,
        method: 'GET',
    };
    Object.assign(config1, {params});
    return new Promise((resolve, reject) => {
        request(config1).then(res => {
            if (res.data.code === 4001) {
                localStorage.clear();
                sessionStorage.clear();
                reject(res.data);
            } else {
                resolve(res.data);
            }
        }).catch(res => {
            // ElMessage.$message.error("请求失败");
            console.log("请求失败")
            reject(res);
        });
    });
}

export function ajaxGet (opt) {
    return ajax(opt)
}